package com.bfly.mall.wechat.minipro.dto.message;

import com.alibaba.fastjson.JSONObject;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 微信小程序订阅消息实体类
 *
 * @author 长沙商脉科技有限公司
 * @date 2020/12/13 11:54
 */
public class WeChatSubscribeMessage implements Serializable {
    private static final long serialVersionUID = -5298562091736948062L;

    /**
     * 用户openid，可以是小程序的openid，也可以是mp_template_msg.appid对应的公众号的openid
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/13 11:55
     */
    private String touser;

    /**
     * 点击模板卡片后的跳转页面，仅限本小程序内的页面。支持带参数,（示例index?foo=bar）。该字段不填则模板无跳转
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/13 13:49
     */
    private String page;

    /**
     * 订单编号
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/13 20:13
     */
    private String orderNo;

    /**
     * 跳转小程序类型：developer为开发版；trial为体验版；formal为正式版；默认为正式版
     *
     * @author 长沙商脉科技有限公司
     * @date 2020/12/14 23:32
     */
    private String state = "developer";


    public void cutValueLength(JSONObject json) {
        json.forEach((key, value) -> {
            JSONObject obj=(JSONObject) value;
            if (key.startsWith("thing")) {
                String data = obj.getString("value");
                data = data.length() > 20 ? data.substring(0, 20) : data;
                obj.put("value",data);
            } else if (key.startsWith("character_string")) {
                String data = obj.getString("value");
                data = data.length() > 32 ? data.substring(0, 32) : data;
                obj.put("value",data);
            } else if (key.startsWith("phone_number")) {
                String data = obj.getString("value");
                data = data.length() > 17 ? data.substring(0, 17) : data;
                obj.put("value",data);
            } else if (key.startsWith("name")) {
                String data = obj.getString("value");
                data = data.length() > 10 ? data.substring(0, 10) : data;
                obj.put("value",data);
            } else if (key.startsWith("phrase")) {
                String data = obj.getString("value");
                data = data.length() > 5 ? data.substring(0, 5) : data;
                obj.put("value",data);
            } else if (key.startsWith("car_number")) {
                String data = obj.getString("value");
                data = data.length() > 8 ? data.substring(0, 8) : data;
                obj.put("value",data);
            } else if (key.startsWith("amount")) {
                BigDecimal amount = obj.getBigDecimal("value");
                String data = amount.toPlainString() + "元";
                obj.put("value",data);
            }
        });
    }

    public String getState() {
        return state;
    }

    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public String getTouser() {
        return touser;
    }

    public void setTouser(String touser) {
        this.touser = touser;
    }

    public String getPage() {
        return page;
    }

    public void setPage(String page) {
        this.page = page;
    }
}
